package com.ruoyi.project.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.FinBaseEntity;
import com.ruoyi.common.domainenum.FinRecordVoucherStatus;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 记账凭证对象 fin_record_voucher
 * 
 * @author abel
 * @date 2024-10-15
 */
public class FinRecordVoucher extends FinBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 凭证时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @Excel(name = "凭证时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date recordDate;

    /** 凭证字 */
    @Excel(name = "凭证字")
    private String recordTag;

    /** 凭证号 */
    @Excel(name = "凭证号")
    private Integer recordNo;

    /** 借方金额 */
    @Excel(name = "借方金额")
    private BigDecimal jieAmount;

    /** 贷方金额 */
    @Excel(name = "贷方金额")
    private BigDecimal daiAmount;

    /** 年份 */
    @Excel(name = "年份")
    private Integer yearValue;

    /** 月份 */
    @Excel(name = "月份")
    private Integer monthValue;

    /** 年份和月份 */
    @Excel(name = "年份和月份")
    private String yearAndMonth;

    /** 状态 */
    @Excel(name = "状态")
    private FinRecordVoucherStatus status;

    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date checkDate;

    /**
     * 审核人
     */
    @Excel(name = "审核人")
    private String checkBy;

    private Long checkId;

    /**
     * 记账时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @Excel(name = "记账时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date recordToBookDate;
    /**
     * 记账人
     */
    @Excel(name = "记账人")
    private String recordBy;

    /**
     * 记账人id
     */
    private Long recordId;


    @TableField(exist = false)
    private List<FinRecordVoucherItem> itemList;


    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public Long getCheckId() {
        return checkId;
    }

    public void setCheckId(Long checkId) {
        this.checkId = checkId;
    }

    public Long getRecordId() {
        return recordId;
    }

    public void setRecordId(Long recordId) {
        this.recordId = recordId;
    }

    public Date getCheckDate() {
        return checkDate;
    }

    public void setCheckDate(Date checkDate) {
        this.checkDate = checkDate;
    }

    public String getCheckBy() {
        return checkBy;
    }

    public void setCheckBy(String checkBy) {
        this.checkBy = checkBy;
    }

    public Date getRecordToBookDate() {
        return recordToBookDate;
    }

    public void setRecordToBookDate(Date recordToBookDate) {
        this.recordToBookDate = recordToBookDate;
    }

    public String getRecordBy() {
        return recordBy;
    }

    public void setRecordBy(String recordBy) {
        this.recordBy = recordBy;
    }

    public List<FinRecordVoucherItem> getItemList() {
        return itemList;
    }

    public void setItemList(List<FinRecordVoucherItem> itemList) {
        this.itemList = itemList;
    }

    public void setRecordDate(Date recordDate)
    {
        this.recordDate = recordDate;
    }

    public Date getRecordDate() 
    {
        return recordDate;
    }
    public void setRecordTag(String recordTag) 
    {
        this.recordTag = recordTag;
    }

    public String getRecordTag() 
    {
        return recordTag;
    }

    public Integer getRecordNo() {
        return recordNo;
    }

    public void setRecordNo(Integer recordNo) {
        this.recordNo = recordNo;
    }

    public void setJieAmount(BigDecimal jieAmount)
    {
        this.jieAmount = jieAmount;
    }

    public BigDecimal getJieAmount() 
    {
        return jieAmount;
    }
    public void setDaiAmount(BigDecimal daiAmount) 
    {
        this.daiAmount = daiAmount;
    }

    public BigDecimal getDaiAmount() 
    {
        return daiAmount;
    }

    public Integer getYearValue() {
        return yearValue;
    }

    public void setYearValue(Integer yearValue) {
        this.yearValue = yearValue;
    }

    public Integer getMonthValue() {
        return monthValue;
    }

    public void setMonthValue(Integer monthValue) {
        this.monthValue = monthValue;
    }

    public void setYearAndMonth(String yearAndMonth)
    {
        this.yearAndMonth = yearAndMonth;
    }

    public String getYearAndMonth() 
    {
        return yearAndMonth;
    }

    public FinRecordVoucherStatus getStatus() {
        return status;
    }

    public void setStatus(FinRecordVoucherStatus status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("recordDate", getRecordDate())
            .append("recordTag", getRecordTag())
            .append("recordNo", getRecordNo())
            .append("jieAmount", getJieAmount())
            .append("daiAmount", getDaiAmount())
            .append("yearValue", getYearValue())
            .append("monthValue", getMonthValue())
            .append("yearAndMonth", getYearAndMonth())
            .append("status", getStatus())
            .append("packageId", getPackageId())
            .append("createId", getCreateId())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateId", getUpdateId())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
